"추론하다(inference)"의 의미는 뭘까?

LLM 관련 글을 읽다보면 모델 추론이라는 표현을 종종 본다.
의미를 아직 잘 모르겠지만 몇몇 아티클을 읽어보고 추정하는 내용을 정리해본다.

참고한 아티클은 다음과 같다.

  1. Rust+WASM으로 이기종 Edge에서 빠르고 포터블한 Llama2 추론 실행하기
  2. llama.cpp - 페이스북의 LLaMA 모델을 순수 C/C++로 추론하기
  3. LLaMa.cpp가 어떻게 가능할까?

Python 종속성은 엄청남. Python 또는 PyTorch용 Docker 이미지는 일반적으로 몇 GB 또는 수십 GB에 달하며, 이는 엣지 서버나 디바이스에서 AI 추론을 수행할 때 특히 문제가 됨

초경량: 추론 애플리케이션은 모든 종속성을 포함하여 2MB에 불과. 이는 일반적인 PyTorch 컨테이너 크기의 1%도 되지 않음

LLaMa 추론 코드를 순수 C++로 재작성한 LLaMA.cpp 덕분에 Pixel5, M2 맥북프로, Raspberry Pi 등 다양한 하드웨어에서 실행 가능

아마도 모델을 사용하는 것을 추론이라고 하는 것 같다. PyTorch나 Tensorflow 같은 프레임워크를 사용하여 모델을 불러와서 사용할 수 있다. 하지만 이러한 프레임워크는 학습을 위한 라이브러리를 제공하거나, 다양한 모델에 대한 기능을 제공하기 때문에 너무 무겁다. 그래서 전용 "추론 애플리케이션"은 가벼운 환경에서 동작케 하는 것이 목적인 것으로 보인다.

맥북에서 LLaMA 모델을 4-bit 양자화하여 실행하는 것을 목표

llama.cpp는 고성능 서버 컴퓨팅이 아닌 맥북과 같은 워크스테이션에서도 실행하는 것이 목적이다. 첫 번째 아티클은 WASM으로 브라우저에서도 모델 추론을 수행할 수 있도록 하는 것이 목적이다. 모두 가벼운 컴퓨팅 환경에서 실행 가능케 한다.


https://news.hada.io/topic?id=11980

AI가 더욱 주류가 되면서, 우리는 추론(inference) 작업에서 발생하는 부하가 훨씬 더 컴퓨팅 집약적이 될 것으로 기대합니다. 1억 명의 GPT-4 사용자를 서비스하는 데 드는 비용은 모델을 훈련하는 데 소요된 비용의 4배가 될 수 있습니다.

추론을 통해 사용자에게 서비스한다. 그 비용이 학습에 소요되는 비용보다 커진다.


LLM 추론 속도 300배까지 향상...'패스트 피드 포워드' 아키텍처 공개

... (중략) 연구진은 이 기술을 검증하기 위해 트랜스포머 기반의 구글 '버트(BERT)'의 피드 포워드 레이어를 FFF로 대체한 ‘패스트 보트(Fast BERT)’ 모델을 개발했다.

언어 모델의 구조를 잘 모르겠지만, 기존 모델을 크게 변경하지 않고서도 적용이 가능한 모양이다.

특히 연구진은 FFF 네트워크를 LLM에 통합하면 엄청난 가속 가능성이 있다고 주장했다. 예를 들어 'GPT-3'에서 각 트랜스포머의 피드 포워드 네트워크는 4만9152개의 뉴런으로 구성되지만, 15층 깊이의 FFF 네트워크로 대체할 경우 총 6만5536개의 뉴런을 포함하지만 실제 추론에는 GPT-3 뉴런의 약 0.03%에 해당하는 16개만 사용한다.

추론에 사용하는 뉴런의 수를 줄여서 속도를 높였다고 한다.

단일 'A6000' GPU에서 단 하루 동안 훈련한 패스트 버트 모델은 버트 모델 성능의 최소 96%를 유지했으며, 가장 뛰어난 실험 결과에서는 피드 포워드 레이어의 뉴런을 고작 0.3%만 사용하면서 기존 버트 모델과 동일한 성능을 보였다.

단, 성능 저하가 있다고 한다. 그래도 속도 향상이 큰 것에 비해 성능 저하는 매우 적은 편이다.